package com.geezdata.cps.sdk3rd.pinduoduo;

import com.geezdata.cps.base.response.BaseResponse;
import com.geezdata.cps.sdk3rd.common.domain.BaseOrder;
import com.geezdata.cps.sdk3rd.common.response.BaseOrderListResult;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoAccessTokenRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoDDKGoodsDeatilRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoDDKGoodsPIdRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoDDKGoodsPromotionUrlRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoDDKGoodsRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoDDKMallUrlGenRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoDDKOrderListIncrementRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoDDKthemeGoodsSearchRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoGoodsListGetRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoGoodsOptGetRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoLogisticsCompaniesRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoOrderIncrementRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoOrderInfoRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.request.PinduoduoRefreshAccessTokenRequest;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoAccessTokenResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoDDKGoodsDetailResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoDDKGoodsPidGenerateResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoDDKGoodsPromotionUrlResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoDDKGoodsResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoDDKMallUrlGenResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoDDKOrderListIncrementResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoDDKThemeGoodsSearchResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoGoodsListGetResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoGoodsOptGetResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoLogisticsCompaniesResult;
import com.geezdata.cps.sdk3rd.pinduoduo.response.PinduoduoOrderInfoResult;

public interface PinduoduoClient {
	public <T extends BaseOrder> BaseResponse<BaseOrderListResult<T>> execute(PinduoduoOrderIncrementRequest request);
	public PinduoduoLogisticsCompaniesResult getLogisticsInfo(PinduoduoLogisticsCompaniesRequest request);
	public BaseResponse<PinduoduoAccessTokenResult> getAccessToken(PinduoduoAccessTokenRequest request);
	public BaseResponse<PinduoduoAccessTokenResult> refreshAccessToken(PinduoduoRefreshAccessTokenRequest request);
	public boolean checkTokenExpire(PinduoduoOrderIncrementRequest request);
	public PinduoduoOrderInfoResult getOrderInfo(PinduoduoOrderInfoRequest request);
	public String getShopName(String appName);
	public PinduoduoGoodsListGetResult getGoodList(PinduoduoGoodsListGetRequest request);
	public PinduoduoDDKGoodsResult getDDKGoodsList(PinduoduoDDKGoodsRequest request);
	public PinduoduoDDKGoodsDetailResult getDDKGoodsDetail(PinduoduoDDKGoodsDeatilRequest request);
	public PinduoduoGoodsOptGetResult getGoodsOpt(PinduoduoGoodsOptGetRequest request);
	public PinduoduoDDKGoodsPromotionUrlResult getPromotionUrl (PinduoduoDDKGoodsPromotionUrlRequest request);
	public PinduoduoDDKGoodsPidGenerateResult getPidGenerate(PinduoduoDDKGoodsPIdRequest request);
	public PinduoduoDDKOrderListIncrementResult getOrderListIncrement(PinduoduoDDKOrderListIncrementRequest request);
    public PinduoduoDDKThemeGoodsSearchResult getThemeGoodsSearch(PinduoduoDDKthemeGoodsSearchRequest request);

	PinduoduoDDKMallUrlGenResult getMallUrlGen (PinduoduoDDKMallUrlGenRequest request);

}
